/**
 * NodeTree 数据存储模块
 * 用于存储和管理从 NodeTree.vue 组件获取的设备名称
 */

// 存储所有设备名称
let deviceNames: string[] = [];

// 存储搜索结果的设备名称
let searchResultNames: string[] = [];

// 存储分页信息
let paginationInfo = {
  currentPage: 1,
  pageSize: 18,
  totalDevices: 0,
  totalSearchResults: 0,
};

/**
 * 设置设备名称列表
 * @param names 设备名称数组
 */
export function setDeviceNames(names: string[]): void {
  deviceNames = [...names];
}

/**
 * 获取所有设备名称
 * @returns 设备名称数组
 */
export function getDeviceNames(): string[] {
  return [...deviceNames];
}

/**
 * 添加单个设备名称
 * @param name 设备名称
 */
export function addDeviceName(name: string): void {
  if (!deviceNames.includes(name)) {
    deviceNames.push(name);
  }
}

/**
 * 删除指定设备名称
 * @param name 要删除的设备名称
 */
export function removeDeviceName(name: string): void {
  const index = deviceNames.indexOf(name);
  if (index > -1) {
    deviceNames.splice(index, 1);
  }
}

/**
 * 设置搜索结果的设备名称
 * @param names 搜索结果设备名称数组
 */
export function setSearchResultNames(names: string[]): void {
  searchResultNames = [...names];
}

/**
 * 获取搜索结果的设备名称
 * @returns 搜索结果设备名称数组
 */
export function getSearchResultNames(): string[] {
  return [...searchResultNames];
}

/**
 * 设置分页信息
 * @param info 分页信息
 */
export function setPaginationInfo(info: Partial<typeof paginationInfo>): void {
  paginationInfo = { ...paginationInfo, ...info };
}

/**
 * 获取分页信息
 * @returns 分页信息
 */
export function getPaginationInfo(): typeof paginationInfo {
  return { ...paginationInfo };
}

/**
 * 清除所有数据
 */
export function clearAllData(): void {
  deviceNames = [];
  searchResultNames = [];
  paginationInfo = {
    currentPage: 1,
    pageSize: 18,
    totalDevices: 0,
    totalSearchResults: 0,
  };
}

/**
 * 获取数据统计信息
 * @returns 数据统计信息
 */
export function getDataStats(): {
  deviceCount: number;
  searchResultCount: number;
} {
  return {
    deviceCount: deviceNames.length,
    searchResultCount: searchResultNames.length,
  };
}
